使用者執行交易,EVM 就執行這筆交易。實際上的意思是,交易被全節點重新執行。EVM 把整個以太坊 p2p 網路抽象起來,當成一種電腦。可以想像是整個網路上有很多台小電腦,整個集體起來的力量,相當於有一台特別厲害的大電腦。有幾台小的電腦下線的話,其他電腦也都還在。
運算資料的規則是 EVM 定義的規則。例如 hydai 海帶學長這週才正忙著介紹給大家的 EVM opcode 的指令們(教學影片「淺入淺出 EVM Object Format」)。EVM 運算規則算出來的結果都要是一樣的。最後的 world state 要結果一致。同樣一筆交易(交易是一個運算),不能說一個節點算完那筆交易,和另一個節點算出來的 world state 不一樣。
Web2 的開發,資料的讀寫 read/write 和同一台主機溝通。而 Web3 的開發,資料的讀寫 read/write,坦白說也是和 Infura 的同一台主機溝通。當然 Web3 開發理想上是要直接和以太坊 p2p network 溝通沒錯,但目前沒有,絕大多數仍然用 Infura。這邊只是描述現況。是否認同或有其他想法又另一件事。
查詢一些 Solidity 或 EVM 等等的關鍵詞,很快就會發現好多文章都是 NIC Lin 老師寫的,經常發在 Taipei Ethereum Meetup 的 medium 平台專欄。(https://medium.com/@twedusuck)